<?php
namespace addon\mall\validate;
use app\common\validate\ValidateBase;
use think\Db;
class GoodsAttribute extends ValidateBase
{
    // 验证规则
    protected $rule = [
        'name'                   => 'require|checkName',
        'type_id'                => 'require|regex:\d+',
        'select_type'            => 'require|in:0,1,2',
        'input_type'             => 'require|in:0,1,2',
        'input_values'           => 'requireIf:input_type,1'
    ];

    // 验证提示
    protected $message = [
        'name.require'              => '属性名称不能为空',
        'type_id.require'           =>'所属商品类型必须',
        'type_id.regex'             =>'所属商品类型必须为数字',
        'select_type.require'       => '属性是否可选必须选择一个',
        'select_type.in'            => '属性是否可选的值必须在0,1,2之内',
        'input_type.require'        => '该属性值的录入方式必须选择一个',
        'input_values.requireIf'    =>'可选值列表必须选择'
    ];

    // 应用场景
    protected $scene = [
        'add'=>['name','type_id','select_type','input_type','input_values'],
    ];
    protected function checkName($value){
        $type_id = input("type_id");
        if(!empty(input("id")) && input("id")>0){
            if(Db::name("GoodsAttribute")->where(['type_id'=>$type_id,"name"=>$value,"id"=>["exp","<> ".input("id")]])->count()>0){
                return "该商品类型下属性名称已经存在";
            }
        }else{
            if(Db::name("GoodsAttribute")->where(['type_id'=>$type_id,"name"=>$value])->count()>0){
                return "该商品类型下属性名称已经存在";
            }  
        }
        
        return true;
    }
}